/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Enlace;

import java.util.Vector;

/**
 *
 * @author Carlos
 */
public class TramaNombre {

    private String Datos = new String(); //Datos trama OK

    public Vector<String> armarDatosNombre(String Datos) {

        //NOTA: DEBEN VENIR DATOS PARES DE 10 CARACTERES

        String auxiliardatos = new String();
        auxiliardatos = "";

        //Vector donde se Insertaran los binarios de un cojunto de DOS (2) Caracteres
        Vector<String> DatosTramas = new Vector();

        System.out.println("///" + Datos);

        for (int i = 0; i < Datos.length(); i++) {

            if (i % 2 == 0) {//Cuendo es 0 Solo debe cojerser la posicion y analizarla

                auxiliardatos += Integer.toBinaryString(Datos.charAt(i));
            //System.out.println("Posicion %0");
            //System.out.println("Posicion: "+i+"   "+Datos.charAt(i)+"   "+Datos+"     "+auxiliardatos);
            }

            if (i % 2 != 0) {//Cuando es 1 debe cojerse, pegarse con la anterior y meterla al vector y borrar

                auxiliardatos += Integer.toBinaryString(Datos.charAt(i));

                //Ojo!!! Aca agrego los ceros para completar campo de datos igual a 18
                auxiliardatos += "0000";

                System.out.println("Posicion: " + i + "   " + Datos.charAt(i) + "   " + Datos + "     " + auxiliardatos);
                DatosTramas.add(auxiliardatos);
                auxiliardatos = "";

            }
        }

        return DatosTramas; //El vector de tramas        
    }

    public Vector<String> aramarTramasNombre(Vector<String> dat) {

        CRC CrcDatosNombre = new CRC();
        String CRCDeDatos = new String();
        String Bandera = new String();
        String auxiliardatos = new String();

        auxiliardatos = "";

        //Aca estaran almacenadas cada una de las tramas del nombre. Esto lo retornará la funcion
        Vector<String> TramasDeNombre = new Vector();

        Bandera = "11111111111111111111";//20 unos


        for (int i = 0; i < dat.size(); i++) {

            /*Calculo de Numero de control en binarios*/
            System.out.println(i);
            auxiliardatos = Integer.toBinaryString(i);
            String auxiliarceros_datoscontrol = new String();
            int j = 4 - auxiliardatos.length();
            if (j > 0) {
                for (int l = 0; l < j; l++) {
                    auxiliarceros_datoscontrol += '0';
                }
            }
            /*Calculo del CRC para la linea de datos (i)*/
            CRCDeDatos = CrcDatosNombre.divi(/*DatosNombre*/dat.get(i));
            TramasDeNombre.add(Bandera + auxiliarceros_datoscontrol + auxiliardatos + dat.get(i) + CRCDeDatos + Bandera);

        }


        return TramasDeNombre;
    }

    public String capturarNombre(Vector<String> vectortramas) {

        String nombreCaprutado = new String();
        nombreCaprutado = "";

        //Recorremos el vector de tramas y por cada una de ellas sacamos los dos caracteres que vienen.
        for (int i = 0; i < vectortramas.size(); i++) {

            String caracterUno = vectortramas.get(i).substring(24, 31);
            //System.out.println(caracterUno+"||"+(char)Integer.parseInt(caracterUno,2)); 
            String caracterDos = vectortramas.get(i).substring(31, 38);
            //System.out.println(caracterDos+"||"+(char)Integer.parseInt(caracterDos,2));

            nombreCaprutado = nombreCaprutado + (char) Integer.parseInt(caracterUno, 2) + (char) Integer.parseInt(caracterDos, 2);

            System.out.println(nombreCaprutado);
        }

        return nombreCaprutado;
    }

    public boolean checkTramaNombre(String trama) {

        boolean esverdadera = true;

        String campoDatosTrama = trama.substring(24, 42);
        String campoCRCTrama = trama.substring(42, 59);
        String campoCRCCalculado = new String();

        CRC nuevoCRC = new CRC();

        campoCRCCalculado = nuevoCRC.divi(campoDatosTrama);

        System.out.println("CRC venida: " + campoCRCTrama);
        System.out.println("CRC calcul: " + campoCRCCalculado);

        return campoCRCCalculado.equals(campoCRCTrama);
    }
}
